
const { resolve } = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
// 单独抽离出来css文件
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

// 压缩css文件
const OptimizeCssAssetsWebpackPlugin = require("optimize-css-assets-webpack-plugin");

module.exports = {
    entry: "./src/index.js", 
    output: {
        filename: "[name].[hash:5].js",
        path: resolve(__dirname, "build")
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: "./src/index.html",
            minify: {
                collapseWhitespace: true,
                removeComments: true
            }
        }),
        new OptimizeCssAssetsWebpackPlugin()
    ],
    // 会将node_modules中的代码单独打包成一个chunk 最终输出
    // 在多入口文件的项目中，对公共依赖的文件会打包成单独的一个chunk（否则 多入口文件项目中，每个文件都会包含一个公共的依赖）
    optimization: {
        splitChunks: {
            chunks: "all"
        }
    },
    mode: "production"
}

/**
 * 
 * 
 * 
 */